package com.gf.framework.redis.annotation;

import org.springframework.core.annotation.Order;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 全局防止重入注解，使用redssion锁
 */
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Order(-1)
@Target(ElementType.METHOD)
public @interface RepeatRequest {
    /**
     * value， 默认值为方法名，也可以手动设置
     * @return
     */
    String value() default "";

    /**
     * 支持SpEL表达式
     * @return
     */
    String key() default "";

    /**
     * 在一段时间内拒绝请求
     * @return
     */
    long refusetime() default  0;

    /**
     * 时间单位
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 如果抛异常后是否自动删除键
     * @return
     */
    boolean deleteKey() default true;
}
